#include "comm.hpp"

int main()
{
    //1. 创建命名管道文件
    umask(0);//权限掩码设置为0
    int n = mkfifo(fifoname.c_str(), mode);
    if(n != 0)
    {
        std::cout << "创建命名管道文件失败：" << strerror(errno) << std::endl; 
        return errno;
    }
    (void)0;
    std::cout << "创建管道文件成功！" << std::endl;

    //2.以读的方式打开管道文件
    int fp = open(fifoname.c_str(), O_RDONLY);
    if(fp == -1)
    {
        std::cout << "打开文件失败：" << strerror(errno) << std::endl;
        return errno;
    }

    //3. 开始通信
    char buffer[NUM] = { 0 };
    while(true)
    {
        int rn = read(fp, buffer, sizeof(buffer) - 1);
        if(rn > 0) //读取成功
        {
            buffer[rn] = 0;
            std::cout << buffer ;
            fflush(stdout);
        }
        else if(rn == 0)
        {
            //写端关闭
            break;
        }
        else
        {
            //读取错误
            break;
        }
    }

    close(fp);//关闭管道文件

    return 0;
}